// 运行时配置

// 全局初始化数据配置，用于 Layout 用户信息和权限初始化
// 更多信息见文档：https://umijs.org/docs/api/runtime-config#getinitialstate
import { useModel } from "umi";
import type { RequestConfig } from 'umi';


export async function getInitialState(): Promise<{ name: string }> {
  return { name: 'Ai创意盒子' };
}

export const layout = () => {
  const {loading} = useModel("global")

  return {
    logo: 'https://img.alicdn.com/tfs/TB1YHEpwUT1gK0jSZFhXXaAtVXa-28-27.svg',
    menu: {
      locale: false,
    },
    loading: loading,
  };
};

export const request: RequestConfig = {
  timeout: 5000,
  // other axios options you want
  errorConfig: {  // =======统一的错误处理方案=======
    errorHandler(){
    },
    errorThrower(){
    }
  },
  requestInterceptors: [  // =======为request方法添加请求阶段的拦截器=======
    // 直接写一个 function，作为拦截器
    (url, options) =>
    {
      // do something
      return { url, options }
    },
    // 一个二元组，第一个元素是 request 拦截器，第二个元素是错误处理
    [(url, options) => {return { url, options }}, (error) => {return Promise.reject(error)}],
    // 数组，省略错误处理
    [(url, options) => {return { url, options }}]
  ],
  responseInterceptors: [
    (response) => {
      // 不再需要异步处理读取返回体内容，可直接在data中读出，部分字段可在 config 中找到
      const { data = {} as any, success = false as boolean, msg = '' as string } = response as any;

      // 验证返回的结果
      if (success) {
        return data;
      }

      throw new Error(msg);
    },
    // 一个二元组，第一个元素是 request 拦截器，第二个元素是错误处理
    [(response) => {return response}, (error) => {return Promise.reject(error)}],
    // 数组，省略错误处理
    [(response) => {return response}]
  ]
};
